package com.yc.test.distributedLock;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.concurrent.TimeUnit;

/**
 * redis帮助类
 */
//@SpringBootTest
//@RunWith(SpringRunner.class)
//@Component
public class RedisHelper {

    @Autowired
    private RedisTemplate redisTemplate;

    public static void main(String[] args) {
        dddd("A");
        dddd("");
    }

    private static void dddd(String str){
        switch (str){
            case "A":
                System.out.println("A");
                break;
            case "B":
                System.out.println("B");
                break;
            default:
                System.out.println("YYYYYYYYYYY");
                break;
        }
    }

    @Test
    public void test() {
        if (redisTemplate.getConnectionFactory().getConnection().setNX("YC".getBytes(), "yangcan".getBytes())) {
            redisTemplate.expire("YC", 5000, TimeUnit.SECONDS);

            System.out.println(redisTemplate.opsForValue().get("YC"));
        }
//        redisTemplate.opsForValue().set("YC", "yangcan11");
//        System.out.println(redisTemplate.opsForValue().get("YC"));
    }

//    public static void connTest() {
//        Jedis jedis = new Jedis("120.79.59.133", 6379);
//        jedis.auth("YangCan1234");
//        System.out.println("连接成功");
//        // 查看服务是否运行
//        System.out.println("服务正在运行: " + jedis.ping());
//    }
//
//    public static void stringAction() {
//        Jedis jedis = new Jedis("localhost");
//        jedis.set("str1", "str1");
//        String str = jedis.get("str1");
//        System.out.print(str);
//    }
//
//    public static void listAction() {
//        Jedis jedis = new Jedis("localhost");
//        jedis.lpush("城市", "北京");
//        jedis.lpush("城市", "上海");
//        jedis.lpush("城市", "广州");
//        jedis.lpush("城市", "深圳");
//        jedis.lpush("城市", "澳门");
//        jedis.lpush("城市", "香港");
//        List<String> list = jedis.lrange("城市", 0, 5);
//        list.forEach(d -> {
//            System.out.print(d);
//        });
//    }
//
//    public static void mapAction() {
//        Map<String, String> map = new HashMap<String, String>() {{
//            put("姓名", "yc");
//            put("性别", "男");
//            put("年龄", "28");
//        }};
//        Jedis jedis = new Jedis("localhost");
//        jedis.hmset("people", map);
//        List<String> list = jedis.hvals("people");
//        System.out.print("所有值：");
//        list.forEach(d -> {
//            System.out.print(d + ",");
//        });
//        Set<String> keys = jedis.hkeys("people");
//        System.out.print("所有key：");
//        keys.forEach(d -> {
//            System.out.print(d + ",");
//        });
//        List<String> dd = jedis.hmget("people", "姓名", "性别", "年龄");
//        dd.forEach(d -> {
//            System.out.print(d);
//        });
//    }
//
//    public static void setAction() {
//        Jedis jedis = new Jedis("localhost");
//        List<String> list = new ArrayList<>();
//        list.add("北京");
//        list.add("南京");
//        list.add("上海");
//        list.add("北京");
//        list.add("北京");
//        list.add("上海");
//        list.add("苏州");
//        list.add("南京");
//        String[] arr = new String[list.size()];
//        for (int i = 0; i < arr.length; i++) {
//            arr[i] = list.get(i);
//        }
//        jedis.sadd("city", arr);
//
//        Set<String> smembers = jedis.smembers("city");
//        System.out.println(smembers);
//    }
//
//    public static void sortsetAction() {
//        Jedis jedis = new Jedis("localhost");
//        Map<String, Double> map = new HashMap<>();
//        map.put("北京", 1.0);
//        map.put("北京", 2.0);
//        map.put("南京", 3.0);
//        map.put("上海", 4.0);
//        map.put("上海", 5.0);
//        map.put("南京", 6.0);
//
//        //调用jedis的zadd方法存入
//        jedis.zadd("city1", map);
//
//        //索引在0,到10之间的,分数由高到底的取出所有的集合
//        Set<String> zrevrange = jedis.zrevrange("city1", 0, 10);
//        System.out.println(zrevrange);
//    }
//
//
//    /**
//     * 写入缓存
//     *
//     * @param key
//     * @param value
//     * @return
//     */
//    public boolean set(final String key, Object value) {
//        boolean result = false;
//        try {
//            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
//            operations.set(key, value);
//            result = true;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return result;
//    }
//
//    /**
//     * 写入缓存设置时效时间
//     *
//     * @param key
//     * @param value
//     * @return
//     */
//    public boolean set(final String key, Object value, Long expireTime) {
//        boolean result = false;
//        try {
//            ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
//            operations.set(key, value);
//            redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
//            result = true;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return result;
//    }
//
//    /**
//     * 批量删除对应的value
//     *
//     * @param keys
//     */
//    public void remove(final String... keys) {
//        for (String key : keys) {
//            remove(key);
//        }
//    }
//
//    /**
//     * 批量删除key
//     *
//     * @param pattern
//     */
//    public void removePattern(final String pattern) {
//        Set<Serializable> keys = redisTemplate.keys(pattern);
//        if (keys.size() > 0)
//            redisTemplate.delete(keys);
//    }
//
//    /**
//     * 删除对应的value
//     *
//     * @param key
//     */
//    public void remove(final String key) {
//        if (exists(key)) {
//            redisTemplate.delete(key);
//        }
//    }
//
//    /**
//     * 读取缓存
//     *
//     * @param key
//     * @return
//     */
//    public Object get(final String key) {
//        Object result = null;
//        ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
//        result = operations.get(key);
//        return result;
//    }
//
//    /**
//     * 哈希 添加
//     *
//     * @param key
//     * @param hashKey
//     * @param value
//     */
//    public void hmSet(String key, Object hashKey, Object value) {
//        HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
//        hash.put(key, hashKey, value);
//    }
//
//    /**
//     * 哈希获取数据
//     *
//     * @param key
//     * @param hashKey
//     * @return
//     */
//    public Object hmGet(String key, Object hashKey) {
//        HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
//        return hash.get(key, hashKey);
//    }
//
//    /**
//     * 列表添加
//     *
//     * @param k
//     * @param v
//     */
//    public void lPush(String k, Object v) {
//        ListOperations<String, Object> list = redisTemplate.opsForList();
//        list.rightPush(k, v);
//    }
//
//    /**
//     * 列表获取
//     *
//     * @param k
//     * @param l
//     * @param l1
//     * @return
//     */
//    public List<Object> lRange(String k, long l, long l1) {
//        ListOperations<String, Object> list = redisTemplate.opsForList();
//        return list.range(k, l, l1);
//    }
//
//    /**
//     * 集合添加
//     *
//     * @param key
//     * @param value
//     */
//    public void add(String key, Object value) {
//        SetOperations<String, Object> set = redisTemplate.opsForSet();
//        set.add(key, value);
//    }
//
//    /**
//     * 集合获取
//     *
//     * @param key
//     * @return
//     */
//    public Set<Object> setMembers(String key) {
//        SetOperations<String, Object> set = redisTemplate.opsForSet();
//        return set.members(key);
//    }
//
//    /**
//     * 有序集合添加
//     *
//     * @param key
//     * @param value
//     * @param scoure
//     */
//    public void zAdd(String key, Object value, double scoure) {
//        ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
//        zset.add(key, value, scoure);
//    }
//
//    /**
//     * 有序集合获取
//     *
//     * @param key
//     * @param scoure
//     * @param scoure1
//     * @return
//     */
//    public Set<Object> rangeByScore(String key, double scoure, double scoure1) {
//        ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
//        return zset.rangeByScore(key, scoure, scoure1);
//    }
}
